home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-12-08 | 53.5 KB | 1,474 lines | [TEXT/R*ch] |
- C.S.M.P. Digest Sat, 30 Jan 93 Volume 2 : Issue 7
-
- Today's Topics:
-
- Problem with patch to HFSDispatch
- How do I find a hole in the DeskTop?!
- Volume icons?
- Suppl. Gestalt Selectors List 1.2
-
-
-
- The Comp.Sys.Mac.Programmer Digest is moderated by Michael A. Kelly.
-
- The digest is a collection of article threads from the internet newsgroup
- comp.sys.mac.programmer. It is designed for people who read c.s.m.p. semi-
- regularly and want an archive of the discussions. If you don't know what a
- newsgroup is, you probably don't have access to it. Ask your systems
- administrator(s) for details. If you don't have access to news, there is
- no way that I know of for you to post articles to the group.
-
- Each issue of the digest contains one or more sets of articles (called
- threads), with each set corresponding to a 'discussion' of a particular
- subject. The articles are not edited; all articles included in this digest
- are in their original posted form (as received by our news server at
- cs.uoregon.edu). Article threads are not added to the digest until the last
- article added to the thread is at least one month old (this is to ensure that
- the thread is dead before adding it to the digest). Article threads that
- consist of only one message are generally not included in the digest.
-
- The entire digest is available for anonymous ftp from ftp.cs.uoregon.edu
- [128.223.8.8] in the directory /pub/mac/csmp-digest. Be sure to read the
- file /pub/mac/csmp-digest/README before downloading any files. The most
- recent issues are available from sumex-aim.stanford.edu [36.44.0.6] in the
- directory /info-mac/digest/csmp. If you don't have ftp capability, the sumex
- archive has a mail server; send a message with the text '$MACarch help' (no
- quotes) to LISTSERV@ricevm1.rice.edu for more information.
-
- The digest is also available via email. Just send a note saying that you
- want to be on the digest mailing list to mkelly@cs.uoregon.edu, and you will
- automatically receive each new issue as it is created. Sorry, back issues
- are not available through the mailing list.
-
- Send administrative mail to mkelly@cs.uoregon.edu.
-
-
- -------------------------------------------------------
-
- From: rmah@panix.com (Robert Mah)
- Subject: Problem with patch to HFSDispatch
- Date: 22 Dec 92 18:27:10 GMT
- Organization: PANIX Public Access Unix, NYC
-
- In an extension that works fine on most systems, but some people seem to
- be getting freezes when they shut down/restart their machine. I'm not
- sure, but I think it might be related to my patching HFSDispatch.
-
- I'm using register a1 to hold the adress of the real trap -- is there
- something wrong with this? Anyone care to comment?
-
- Some code...
-
- /*
- * We need to trap whenever the user moves a directory (selector 5).
- */
- pascal void FSDispatchPatch()
- {
- asm{
- movem.l a4, -(sp) ; save registers
- lea main, a4 ; setup globals
- cmp.w #5, d0 ; if not CatMove
- bne.s @1
- move.w #1, gNeedsUpdate ; set the gNeedsUpdate flag
- @1 move.l realHFSDispatchTrap, a1 ; grab the addr of the real thing
- movem.l (sp)+, a4 ; restore registers
- jmp (a1) ; jump to real HFSDispatch
- }
- }
-
- Happy Holdiays,
- Rob
- - --
- [--------------------------------------------------]
- [ Robert S. Mah | "Every day an adventure, ]
- [ rmah@panix.com | every moment a challenge." ]
- [--------------------------------------------------]
-
- +++++++++++++++++++++++++++
-
- From: leonardr@netcom.com (Leonard Rosenthol)
- Date: 23 Dec 92 00:30:46 GMT
- Organization: Netcom Online Communications Services (408-241-9760 login: guest)
-
- In article <1992Dec22.182710.26751@panix.com> rmah@panix.com (Robert Mah) writes:
- >In an extension that works fine on most systems, but some people seem to
- >be getting freezes when they shut down/restart their machine. I'm not
- >sure, but I think it might be related to my patching HFSDispatch.
- >
- >I'm using register a1 to hold the adress of the real trap -- is there
- >something wrong with this? Anyone care to comment?
- >
- Yup, that's your problem. A1 & A2 are "special" for the HFSDispatch
- routine and "may" contain useful information. Using A3 should work just
- fine.
-
- - --
- - -----------------------------------------------------------------------------
- Leonard Rosenthol Internet: leonardr@netcom.com
- Director of Advanced Technology AppleLink: MACgician
- Aladdin Systems, Inc. GEnie: MACgician
-
- +++++++++++++++++++++++++++
-
- From: absurd@apple.apple.com (Tim Dierks, software saboteur)
- Date: 23 Dec 92 03:10:35 GMT
- Organization: MacDTS Marauders
-
- In article <1992Dec22.182710.26751@panix.com>, rmah@panix.com (Robert Mah)
- wrote:
- >
- > In an extension that works fine on most systems, but some people seem to
- > be getting freezes when they shut down/restart their machine. I'm not
- > sure, but I think it might be related to my patching HFSDispatch.
- >
- > I'm using register a1 to hold the adress of the real trap -- is there
- > something wrong with this? Anyone care to comment?
- >
- > Some code...
- >
- > /*
- > * We need to trap whenever the user moves a directory (selector 5).
- > */
- > pascal void FSDispatchPatch()
- > {
- > asm{
- > movem.l a4, -(sp) ; save registers
- > lea main, a4 ; setup globals
- > cmp.w #5, d0 ; if not CatMove
- > bne.s @1
- > move.w #1, gNeedsUpdate ; set the gNeedsUpdate flag
- > @1 move.l realHFSDispatchTrap, a1 ; grab the addr of the real thing
- > movem.l (sp)+, a4 ; restore registers
- > jmp (a1) ; jump to real HFSDispatch
- > }
- > }
-
- Your problem is that you're destroying A1; it's used as a parameter by
- some HFSDispatch selectors.
-
- While you could do this by trashing a different register, which isn't
- used, you could always use the slightly more complex but somewhat more
- clever method.
-
- clr.l -(sp) ; save room for forwarding
- address
- > movem.l a4, -(sp) ; save registers
- > lea main, a4 ; setup globals
- > cmp.w #5, d0 ; if not CatMove
- > bne.s @1
- > move.w #1, gNeedsUpdate ; set the gNeedsUpdate flag
- @1 move.l realHFSDispatchTrap,4(a7) ; store forwarding address on
- stack
- > movem.l (sp)+, a4 ; restore registers
- rts ; jump to real HFSDispatch
-
- Note that this preserves all the registers by using the trick of using
- an RTS to pop the jump address off of the stack, allowing you to restore
- all your registers first.
-
- (Well, I always thought it was neat, anyway.)
-
- Have a great holiday, one and all- I'm off to home till Jan 6; I'll
- be gone (netwise) till then.
-
- Tim Dierks
- MacDTS pinball addict
-
- +++++++++++++++++++++++++++
-
- From: d88-jwa@hemul.nada.kth.se (Jon Wtte)
- Date: 23 Dec 92 11:05:45 GMT
- Organization: Royal Institute of Technology, Stockholm, Sweden
-
- In <1992Dec22.182710.26751@panix.com> rmah@panix.com (Robert Mah) writes:
-
- >I'm using register a1 to hold the adress of the real trap -- is there
- >something wrong with this? Anyone care to comment?
-
- >@1 move.l realHFSDispatchTrap, a1 ; grab the addr of the real thing
- > movem.l (sp)+, a4 ; restore registers
- > jmp (a1) ; jump to real HFSDispatch
-
- Yes, this trashes register a1.
-
- Instead, you should "reserve space" on the stack for the
- chain address, save the registers, do your thing, put
- the registers back into shape and RTS _to_the_next_routine_.
-
- Something like:
-
- subq #4, a7
- movem.l a1/a4, -(a7)
- ...
- do stuff
- ...
- move.l realHFSDispatchTrap, a1
- move.l a1, 8(a7)
- movem.l (a7)+, a1/a4
- rts
-
- Note that this _IS_ a head patch, since the "RTS" actually
- is used as a jump to the next function, leaving stack and
- registers intact.
-
- Cheers,
-
- / h+
-
- - --
- -- Jon W{tte, h+@nada.kth.se, Mac Hacker Deluxe --
- "It was, in fact, cool as all get-out. Fortunately it was a little
- too late (historically speaking) to be groovy."
- -- Dennis Pelton
-
- +++++++++++++++++++++++++++
-
- From: rmah@panix.com (Robert Mah)
- Date: 28 Dec 92 02:25:59 GMT
- Organization: PANIX Public Access Unix, NYC
-
- In <absurd-221292190600@seuss.apple.com> absurd@apple.apple.com (Tim Dierks, software saboteur) writes:
-
- >Your problem is that you're destroying A1; it's used as a parameter by
- >some HFSDispatch selectors.
-
- >While you could do this by trashing a different register, which isn't
- >used, you could always use the slightly more complex but somewhat more
- >clever method.
-
- > clr.l -(sp) ; save room for forwarding address
- >> movem.l a4, -(sp) ; save registers
- >> lea main, a4 ; setup globals
- >> cmp.w #5, d0 ; if not CatMove
- >> bne.s @1
- >> move.w #1, gNeedsUpdate ; set the gNeedsUpdate flag
- >> @1 move.l realHFSDispatchTrap,4(a7) ; store forwarding address on stack
- >> movem.l (sp)+, a4 ; restore registers
- > rts ; jump to real HFSDispatch
-
- >Note that this preserves all the registers by using the trick of using
- >an RTS to pop the jump address off of the stack, allowing you to restore
- >all your registers first.
-
- Thanks I'll try it and see how it works. But won't changing the return
- address mess up some toolbox things. I seem to recall that that was why
- "tail patches" were not allowed -- of course, I could be totally confused
- here :->
-
- Thanks again,
- Rob
- - --
- [--------------------------------------------------]
- [ Robert S. Mah | "Every day an adventure, ]
- [ rmah@panix.com | every moment a challenge." ]
- [--------------------------------------------------]
-
- +++++++++++++++++++++++++++
-
- From: rmah@panix.com (Robert Mah)
- Date: 28 Dec 92 02:28:01 GMT
- Organization: PANIX Public Access Unix, NYC
-
- Jon,
-
- Thanks a bunch. Also clears up a question I had regarding return addresses
- that I asked Tim Dierks about in his reply.
-
- Cool runnin'
- Rob
-
- - --
- [--------------------------------------------------]
- [ Robert S. Mah | "Every day an adventure, ]
- [ rmah@panix.com | every moment a challenge." ]
- [--------------------------------------------------]
-
- +++++++++++++++++++++++++++
-
- From: d88-jwa@dront.nada.kth.se (Jon Wtte)
- Date: 28 Dec 92 10:41:04 GMT
- Organization: Royal Institute of Technology, Stockholm, Sweden
-
- In <1992Dec28.022559.2496@panix.com> rmah@panix.com (Robert Mah) writes:
-
- >Thanks I'll try it and see how it works. But won't changing the return
- >address mess up some toolbox things. I seem to recall that that was why
- >"tail patches" were not allowed -- of course, I could be totally confused
- >here :->
-
- But that's the beauty of it; we DON'T change the normal return
- address. The stack will look a little like:
-
- <Junk>
- Return Address
- <Saved Space>
- <Saved registers>
-
- Then we push the address to chain to:
-
- <Junk>
- Return Address
- Chain Address
- <Saved registers>
-
- and restore registers and do an RTS:
-
- <Junk>
- Return Address
-
- The stack looks JUST like it did on entry to our routine!
- The patch has preserved all registers and the original return
- address, so it isn't a tail patch and it isn't zapping any
- registers; it's clean.
-
-
- - --
- -- Jon W{tte, h+@nada.kth.se, Mac Hacker Deluxe --
-
- "From now on I will re-label the EQ on the deck as Fizz and Wobble
- instead of HF and LF."
-
- ---------------------------
-
- From: yjc@po.cwru.edu (Jerome 'TofuSoft' Chan)
- Subject: How do I find a hole in the DeskTop?!
- Date: 25 Dec 1992 06:29:04 GMT
- Organization: The Tofu Society of Singapore
-
- How do I find a clear section of the desktop which is NOT covered by
- Windows?! I've want my clock application window to slowly creep to the
- nearest uncovered region on the desktop.
-
- - ---
- The Evil Tofu
-
- +++++++++++++++++++++++++++
-
- From: grobbins@Apple.COM (Grobbins)
- Date: 27 Dec 92 01:02:48 GMT
- Organization: Apple Computer Inc, Cupertino, CA
-
- In article <yjc-251292012254@yjc-slip.dialin.cwru.edu> yjc@po.cwru.edu (Jerome 'TofuSoft' Chan) writes:
- >How do I find a clear section of the desktop which is NOT covered by
- >Windows?! I've want my clock application window to slowly creep to the
- >nearest uncovered region on the desktop.
-
- Hmm. Well, one way would be to make certain that your application is
- the backmost and open a window which covers the whole desktop (the same
- size as the gray rgn bounding box.) Then the visRgn of that window
- would be all of the desktop area minus all of the open windows of all
- applications.
-
- Making your application the backmost would be a small pain, and opening
- a window which covers the whole screen would make an ugly flash, so
- that's not a good solution. Besides, you would either have to keep the
- window open and visible or else reopen it periodically to keep monitoring
- its visRgn.
-
- A more promising solution is to use the visRgn of the System 7 Finder's
- Desktop window, since that region also reflects the whole screen minus
- any open windows (including your app's open window). There's no documented
- way to get the WindowPtr to the Desktop window, however, though doing
- something like patching OpenWindow or GetNewWindow at INIT time would
- probably work. The window is named Desktop, though there is no
- guarantee that the Finder window list won't have other windows
- coincidentally named Desktop, so checking its bounds against the the
- real desktop (grayrgn) bounds is probably a good idea to makesure you've
- gotten the right window.
-
- Good luck.
-
- Grobbins grobbins@apple.com
-
- +++++++++++++++++++++++++++
-
- From: rmah@panix.com (Robert Mah)
- Date: 28 Dec 92 02:40:44 GMT
- Organization: PANIX Public Access Unix, NYC
-
- In <yjc-251292012254@yjc-slip.dialin.cwru.edu> yjc@po.cwru.edu (Jerome 'TofuSoft' Chan) writes:
-
- >How do I find a clear section of the desktop which is NOT covered by
- >Windows?! I've want my clock application window to slowly creep to the
- >nearest uncovered region on the desktop.
-
- GREAT IDEA. I'm gonna use it too, if you don't mind.
-
- Anyway, you just gotta look at the structure regions of all the windows that
- are visible. Each application keeps a list of windows starting at the global
- WindowList. The only problem is to get WindowList for each application.
- One possible way is to patch InitWindows and grab that app's WindowList
- global. Don't forget to patch ExitToShell to catch the application's quitting.
-
- Another option is to track all window creation, deletion, hiding and showing.
-
- On second thought, does GrayRgn hold the VISIBLE desktop or the whole thing?
- Not sure on this...but a little experimentation should clear it up.
-
- Cheers,
- Rob
-
-
-
- - --
- [--------------------------------------------------]
- [ Robert S. Mah | "Every day an adventure, ]
- [ rmah@panix.com | every moment a challenge." ]
- [--------------------------------------------------]
-
- +++++++++++++++++++++++++++
-
- From: phaedrus@halcyon.com (Mark Phaedrus)
- Date: 28 Dec 92 05:26:51 GMT
- Organization: The 23:00 News and Mail Service
-
- In article <1992Dec28.024044.3652@panix.com> rmah@panix.com (Robert Mah) writes:
- >In <yjc-251292012254@yjc-slip.dialin.cwru.edu> yjc@po.cwru.edu (Jerome 'TofuSoft' Chan) writes:
- >>How do I find a clear section of the desktop which is NOT covered by
- >>Windows?! I've want my clock application window to slowly creep to the
- >>nearest uncovered region on the desktop.
- >GREAT IDEA. I'm gonna use it too, if you don't mind.
-
- I'm not sure that this is such a good idea. The user is always supposed
- to be in control of the Mac interface. When I put a window somewhere on my
- screen, it means that I've decided that that's a perfectly fine place for that
- window, and I would just assume it didn't try to crawl somewhere else on its
- own, thank you very much. :)
- If you do decide to do this, be sure to make it user-configurable. And
- while you're making it user-configurable, add the option to make the window
- just teleport to a clear location, rather than "creeping" there. Even if I
- wanted this feature, I'm not sure that I'd want a background application
- like a clock using up the CPU time required to slowly move its window across
- the screen.
- - --
- \o\ Internet: phaedrus@halcyon.com (Seattle, WA Public Access Unix) \o\
- \o\ "How'd you like to move a few steps down the food chain, pal?" \o\
- \o\ If you enjoy fantasy/SF stories with transformation themes, email me \o\
- \o\ for a copy of the Transformation Stories List. \o\
-
- +++++++++++++++++++++++++++
-
- From: yjc@po.cwru.edu (Jerome 'TofuSoft' Chan)
- Date: 28 Dec 92 19:19:03 GMT
- Organization: The Tofu Society of Singapore
-
- In article <1992Dec28.024044.3652@panix.com>, rmah@panix.com (Robert Mah)
- wrote:
-
- > GREAT IDEA. I'm gonna use it too, if you don't mind.
-
-
- Please go ahead and use it.
-
- Maybe someone could put up a window behind such a hole and do neat little
- animations, like maybe a cartoon of the talking moose playing chess with
- the dogcow. :)
-
- - ---
- The Evil Tofu
-
- ---------------------------
-
- From: UC525655@mizzou1.missouri.edu (Mark Eaton)
- Subject: Volume icons?
- Date: 20 Dec 92 22:41:12 GMT
- Organization: University of Missouri
-
- Hi all-
- Where can i find the icon definition for a mounted volume?
- I have looked through all the (I think) relevant material in
- IM I-VI, but obviously I've missed something somewhere, but all
- IM talks about are file icons. Help!
-
-
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Mark Eaton | Opinions? We're not allowed to have
- UC525655@MIZZOU1.MISSOURI.EDU | opinions at Mizzou... get back to me
- | in '94 when I graduate... ;)
-
- +++++++++++++++++++++++++++
-
- From: jacman@magicbb.uucp (Jordan Christensen)
- Date: 22 Dec 92 12:32:28 GMT
- Organization: MAGIC - Macintosh Awareness Group In Canada
-
- >Hi all-
- >Where can i find the icon definition for a mounted volume?
- >I have looked through all the (I think) relevant material in
- >IM I-VI, but obviously I've missed something somewhere, but all
- >IM talks about are file icons. Help!
-
- The volume icons are stored in an invisible file called 'Icon' in the root
- directory, it's id is (not sure of this) '-16455'.
-
- Hoped This Helped
-
- +++++++++++++++++++++++++++
-
- From: dmitry@chemistry.chem.utah.edu (Dmitry Boldyrev)
- Date: 29 Dec 92 18:39:56 GMT
- Organization: University of Utah
-
- >Hi all-
- >Where can i find the icon definition for a mounted volume?
- >I have looked through all the (I think) relevant material in
- >IM I-VI, but obviously I've missed something somewhere, but all
- >IM talks about are file icons. Help!
- >
- >
- >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- >Mark Eaton | Opinions? We're not allowed to have
- >UC525655@MIZZOU1.MISSOURI.EDU | opinions at Mizzou... get back to me
- > | in '94 when I graduate... ;)
-
- Hello Mark,
- Here, I have smth for you...
- ============================ CUT HERE ============================
-
- /* this is the data structure pointed to in the result of the
- disk driver call csCode=21 (get ICN#/comment). This call
- works on all devices.
- */
-
- typedef struct TInfoBlk {
- unsigned char icon[128]; /* icon */
- unsigned char mask[128]; /* mask */
- Str255 infoString; /* info string (for get info) */
- } TInfoBlk,*TInfoPtr;
-
- void GetDiskInfo(short driverRefNum,short driveNum,TInfoPtr *dataBlk);
- void DrawInfo(TInfoPtr infoBlock);
- void GetAllInfo(void);
- void GetAllInfoYourWay(void);
-
-
- void main(void)
- {
- WindowPtr theWindow;
- Rect wBounds;
-
- #ifdef THINK_C
- InitGraf(&thePort);
- #else
- InitGraf(&qd.thePort);
- #endif
- InitFonts();
- InitWindows();
- InitMenus();
- TEInit();
- InitDialogs(nil);
- FlushEvents(everyEvent,0);
- InitCursor();
-
- SetRect(&wBounds,40,40,100,100);
- theWindow = NewWindow
- (nil,&wBounds,(StringPtr)"\pIcons",true,documentProc,
- (WindowPtr)(-1),true,0L);
- SetPort(theWindow);
- GetAllInfo();
- DisposeWindow(theWindow);
- }
-
-
- /* This routine traverses the currently mounted volumes
- index using PBHGetVInfo(). The drive # and device
- driver number for each volume is extracted from the
- parameter block, and passed into GetDiskInfo() to
- call the disk drivers.
-
- Once the data has been retrieved, the icon is plotted
- */
-
- void GetAllInfo(void)
- {
- HParamBlockRec vBlock; /* volume parameter block used to traverse
- mounted vols */
- OSErr err;
- TInfoPtr dataBlk; /* pointer used to point to result of csCode=21 call
- */
-
- vBlock.volumeParam.ioNamePtr = nil;
- vBlock.volumeParam.ioVRefNum = 0;
- vBlock.volumeParam.ioVolIndex = 1;
-
- do {
- err = PBHGetVInfo (&vBlock,false);
- vBlock.volumeParam.ioVolIndex++;
- if (err==noErr) {
- GetDiskInfo(vBlock.volumeParam.ioVDRefNum,
- vBlock.volumeParam.ioVDrvInfo,&dataBlk);
- if (dataBlk)
- DrawInfo(dataBlk);
- }
- } while (err==noErr);
- }
-
-
- /* GetDiskInfo() makes the call to the volume's driver to get the
- volume icon and info string. A pointer to this data is returned
- by reference in dataBlk
-
- This routine tries to call the disk's driver with csCode=22,
- which attempts to get info on a specific physical volume.
-
- If the csCode=22 call fails, I call csCode=21 to get the generalized
- media icon.
-
- Both calls are documented in IM V-470
- */
-
- void GetDiskInfo(short driverRefNum,short driveNum,TInfoPtr *dataBlk)
- {
- CntrlParam pBlock;
- OSErr err;
-
- pBlock.ioVRefNum = driveNum;
- pBlock.ioCRefNum = driverRefNum;
- pBlock.csCode = 22;
-
- err = PBControl(&pBlock,false);
- if (err==controlErr) {
- pBlock.ioVRefNum = driveNum;
- pBlock.ioCRefNum = driverRefNum;
- pBlock.csCode = 21;
- err = PBControl(&pBlock,false);
- }
-
- if (err==noErr)
- *dataBlk = (TInfoPtr) *(Ptr *)pBlock.csParam; /* messy way to get the
- locn out */
- else *dataBlk = nil;
- }
-
-
-
- /* this routine uses CopyBits to draw the icon on the screen (ignoring
- the mask and
- the info string). Make sure you put up a window and call SetPort()
- first!
- */
-
- void DrawInfo(TInfoPtr infoBlock)
- {
- BitMap iconMap;
- Rect destRect;
-
- iconMap.baseAddr = (Ptr)infoBlock;
- iconMap.rowBytes = 4;
- SetRect(&iconMap.bounds,0,0,32,32);
- SetRect(&destRect,0,0,32,32);
- OffsetRect(&destRect,10,10);
- CopyBits(&iconMap,&thePort->portBits,&iconMap.bounds,&destRect,
- srcCopy,nil);
- while (!Button());
- while (Button());
- }
- ============================ CUT HERE ============================
-
- Guess, it make sense..
- .................................................
- Dmitry Boldyrev,
- Department of Chemistry, University of Utah.
- Internet: dmitry@chemistry.chem.utah.edu
-
- -- "I only know that I know nothing"
- - Socrates
-
- ---------------------------
-
- From: rgaros@bio.vu.nl (Rene G.A. Ros)
- Subject: Suppl. Gestalt Selectors List 1.2
- Organization: VU Biology, Amsterdam, The Netherlands
- Date: Tue, 1 Dec 1992 12:10:58 GMT
-
- Archive-name: gestalt-list
- Last Modified: 1992/11/30
- Version: 1.2
-
-
-
- Supplemental Gestalt Selectors List 1.2
- =======================================
-
- Last modified: November 30, 1992, 21:50 CET (GMT+1)
-
- Supplemental to the selector codes listed in the Gestalt Chapter of
- Inside Macintosh VI (IM VI), that is.
- These can include selector codes installed by Apple's (system)
- software or by software from third parties (your software?).
- (NIM Operating System Utilities has been delayed from Winter 1992 to
- June 1993, according to Addison-Wesley Holland).
-
- I don't have all the documentation or knowledge and I don't want to.
- I would like to see this list to become a combined effort by different
- persons who have together access to a wide area of information.
- This list may contain (educated) guesses and perhaps even false
- information, so no guarantee is made about the contents.
- You can use this information freely, but when you find information not
- included in IM VI or in this list; please mail it me.
- If you have additions, corrections, comments, suggestions, news about
- available software, etc., please mail me. Please, also mention the
- source you used.
- For ways to contact me, see the end of this list.
-
- This list is originally distributed in the following ways:
- USENET newsgroup comp.sys.mac.programmer (c.s.m.p.)
- I will post every new version of the list to c.s.m.p., but the last
- version will be reposted once a month.
-
- FTP-site
- sumex-aim.stanford.edu
- Every new version (except bug-release) is submitted to the info-mac
- archives at sumex-aim.stanford.edu. (/info-mac/tech/gestalt-list-XX.txt)
- It is also available on its mirror sites (e.g. in Europe: lth.se).
-
- FINGER
- You can also read this list by using finger to 'rgaros@bio.vu.nl'.
- Tip: 'finger rgaros@bio.vu.nl | more' or
- 'finger rgaros@bio.vu.nl > filename'
- My .plan file that you see when you do this, may be more up-to-date and
- may include small corrections, or contains a preliminary version of the
- next version to be published.
-
- MAIL LIST
- Every person on this mail list gets automatically an update by email whenever
- there are some changes. If you want to join this mail list you need to send
- me an email asking to be included. The same applies when you want to be
- removed from the list.
- This service is only possible to those who have an account on Internet or
- any other network reachable from Internet. I can not provide mailing of
- printed versions or on disk by normal surface mail.
-
-
- CONTENTS
- # Changes
- # Definitions and Format
- # Gestalt Selector Codes & Responses
- = Apple System Software
- = Apple Additional Software
- = Third Parties Software
- # Gestalt Selector Codes, Responses Unknown
- = Apple System Software
- = Apple Additional Software
- = Third Parties Software
- # Abbreviations
- # Format version numbers
- = 4-byte words
- = BCD
- = INTEGER
- # AppleShare File & Print Server selector codes
- # Glue code
- # Sources
- # Related Software
- # Acknowledgements
- # Legal Stuff
- = Notice of Liability
- = Trademarks
- = Distribution
- # Moderator
-
-
- ####Changes (since v1.1)
- Added selectors
- Apple System : alis, fxfr, misc, term,
- Apple Add. : arb
- Third Parties : CKI3
- Added unknown
- Apple System : OSType(7), OSType(13)
- Apple Add. :
- Third Parties : AP17, GtOp, gV00..gV04, LFnt, PBUf, PBUt, RQDC
- Changed
- Apple System : atkv, conn, hdwr, mach, ppc , rsrc, tabl
- Apple Add. : qtim
- Third Parties : YeHa
- Previously unknown
- Apple System : ctbm, ctbu, sccr, sccw, vmbs
- Apple Add. : strm
- Third Parties : ApoL (incl. complete description)
-
- Added "Glue Code" chapter about selectors 'glue-ed' by programming
- software, when the Gestalt Manager is not available. (Suggested
- by Marco Piovanelli).
- Marco also went hunting for the Gestalt Selector Table and found
- probably the correct meaning of the 'tabl' selector.
- Meanwhile he also found two unusual selectors, OSType(7) and
- OSType(13) ("Charlie's selectors" !? ;-) ) These are listed at
- the end of unknown Apple System Software selectors.
- Added "Legal Stuff" chapter (US legal system is famous :-) ).
- More entries in 'Related software'-chapter, including the location
- of related New Technical Notes on ftp.apple.com.
- Selectors 'dict' and 'tsmv' were incorrectly listed as known.
- Dave Radcliffe (Mac DTS, Author TN Apple) clarified the two
- contradictions in the previous version.
- Jeremy Roussak (Author Apollo ext) allowed including the chapter
- 'Programmers' Information' from the Apollo 1.0 documentation.
- Victor Tan (Author SpeedyFinder7 cp) provided some remarks about
- the selector installed by SP7.
-
- And yes, when there are more 'Third Party'-selectors they will
- get their own, separate list.
-
-
- ####Definitions and Format
- Apple System Software
- Selectors installed by normal System Software.
- IM VI: "Apple reserves for its own use all four-character
- sequences consisting solely of lowercase letters and
- nonalphabetic ASCII characters".
- Apple Additional Software
- Selectors installed by additional software by Apple Inc.
- See also quote above.
- Third Parties Software
- Selectors installed by software from parties other than Apple Inc.
- IM VI: "If you have registered a creator string with Apple, you
- are strongly encouraged to use that sequence as your
- selector code".
-
- Format used to display information about selector code:
-
- | ****'selector code' (Application [available in version])
- | name (description, documentation) OR description
- |
- | CONST declaration; {remark} *ref.number to source
- |
- | contradiction:
- | source A says "X"
- | source B says "Y"
-
- If a selector code is installed by Apple software the entry also
- includes if it is in addition to or not listed in IM VI.
- The source reference number may also be used in other places than
- indicated above. It then applies to other parts of then entry.
- Some constant-names may not originate from official publications.
- Any response value described is what was found by others or myself on
- different machine(s) with its configuration.
-
-
- ####Gestalt Selector Codes & Responses
- ====Apple System Software
- ****'alis' (System [7.0])
- gestaltAliasMgrAttr (addition by AppleTalk Remote Access)
-
- gestaltAliasMgrSupportsRemoteAppletalk = 1; {supports Remote Access} *9
- See also remarks with 'qtim' selector.
- ****'atkv' (System [since 7.0, AT 56])
- gestaltATalkVersion *4 (not listed)
- Returns AppleTalk version in 4-byte words.
- This is different from 'atlk' !
- With the release of the System 7 Tuner product, AppleTalk will not be
- loaded at startup, if prior to the previous shutdown AppleTalk was
- turned off in the Chooser. Under this circumstance, the 'atkv' selector
- is not available. If the 'atkv' selector is not available under System 7,
- this is an indicator that AppleTalk cannot be turned on without doing so
- in the Chooser and rebooting the system. *4
-
- gestaltATalkVersion = 'atkv'; *3/5
- ****'atlk' (System [since 6.0.4])
- gestaltAppleTalkVersion (addition)
- Returns the version of the .MPP driver in INTEGER.
-
- LAPMgrExists := (AppleTalkVersion >= 53); *4
- ****'conn' (System, CTB installed [since 7.0])
- gestaltConnMgrAttr (addition)
- Under System 6, this Gestalt selector isn't implemented when the
- Communications Toolbox is installed (Michael Hecht).
-
- additional responses exist but unknown (bit 2 & 3).
- ****'ctbm' (System, CTB installed)
- gestaltCTBManagersAttr (not listed)
- Communications Toolbox Managers, bitmask of which managers are present.
-
- gestaltCTBManagersAttr = 'ctbm'; *7
- ****'ctbu' (System, CTB installed)
- gestaltCTBUtilsAttr (not listed)
- Communications Toolbox Utilities Attr
-
- gestaltCTBUtilsAttr = 'ctbu'; *7
- gestaltCTBUtilsPresent = 0; *7
- ****'eajt' (Easy Access cp [since 7.0])
- gestaltEasyAccessJTable (not listed)
- Returns the base address of the Easy Access jump-trap table.
-
- gestaltEasyAccessJTable = 'eajt'; *3
- ****'flag' (Network Extension ext [since System 7.0 *4])
- gestaltFlagshipAttr (not listed)
-
- gestaltFlagshipAttr = 'flag'; *3
- gestaltFlagshipPresent = 0; *3
- gestaltFlagshipRegistered = 1; *3
- ****'fpu ' (System [since 6.0.4])
- gestaltFPUType (addition)
-
- gestal68040FPU = 3; *2
- ****'fs ' (System)
- gestaltFSAttr (addition)
-
- gestaltHasFileSystemManager = 2; *2
- ****'font' (System [since 7.0])
- gestaltFontMgrAttr (addition)
-
- additional System 7.1 responses exist but unknown.
- ****'fxfr' (System [since 7.0])
- gestaltFXfrMgrAttr (addition)
-
- gestaltFXfrMgrErrorString = 1; *7
- ****'hdwr' (System [since 6.0.4])
- gestaltHardwareAttr (additions)
-
- gestaltHasRBV = 2; {RBV} *3
- gestaltHasOSS = 5; {OSS} *3
- gestaltHasSCSIDMA = 6; {53C80 SCSI DMA} *3
- gestaltHasSWIMIOP = 8; {SWIM IOP} *3
- gestaltHasSCCIOP = 9; {SCC IOP} *3
- gestaltHasFitch = 10; {Fitch memory Controller} *8
- gestaltHasIWM = 11; {IWM} *3
- gestaltHasPWM = 12; {PWM disk speed buffer} *8
- gestaltHasRAMSndBuff = 13; {RAM-based sound buffer} *8
- gestaltHasVideoDAConv = 14; {Video D/A Converter} *8
- gestaltHasPGC = 15; {PGC (parity control)} *8
- gestaltHasSoftPowerOff = 19; *2
- gestaltHasSonic = 20; {Sonic} *3
- gestaltHasSCSI961 = 21; {Int. 53C96 SCSI} *1
- gestaltHasSCSI962 = 22; {Ext. 53C96 SCSI} *1
- gestaltHasDAFBVideo = 23; {DAFB Video} *3
- See for more information the TN "M.OV.GestaltSysenvirons".
- ****'kbd ' (System [since 6.0.4])
- gestaltKeyboardType (additions)
-
- gestaltPwrBookADBKbd = 12; {PowerBook ADB Keyboard} *1
- gestaltPwrBookISOADBKbd = 13; {PowerBook ISO ADB Keyboard} *1
- ****'mach' (System [since 6.0.4])
- gestaltMachineType (additions)
-
- gestaltQuadra900 = 20; {Macintosh Quadra 900} *1
- gestaltPowerBook170 = 21; {Macintosh PowerBook 170} *1
- gestaltQuadra700 = 22; {Macintosh Quadra 700} *1
- gestaltClassicII = 23; {Macintosh Classic II} *1
- gestaltPowerBook100 = 24; {Macintosh PowerBook 100} *1
- gestaltPowerBook140 = 25; {Macintosh PowerBook 140} *1
- gestaltQuadra950 = 26; {Macintosh Quadra 950} *1
- gestaltPowerBook210 = 29; {Macintosh PowerBook 210}
- gestaltPowerBook230 = 32; {Macintosh PowerBook 230}
- gestaltPowerBook180 = 33; {Macintosh PowerBook 180}
- gestaltPowerBook160 = 34; {Macintosh PowerBook 160}
- gestaltMacLCII = 37; {Macintosh LC II}
- gestaltMacIIvi = 44; {Macintosh IIvi}
- gestaltPerforma600 = 45; {Macintosh Performa 600}
- gestaltMacIIvx = 48; {Macintosh IIvx}
- gestaltPowerBook145 = 54; {Macintosh PowerBook 145}
-
- Exceptions with systems prior to System 7.1:
- gestaltMacLCII = 19; {Macintosh LC & LC II}
- gestaltPowerBook145 = 25; {Macintosh PowerBook 140 & 145}
- ****'misc' (System [since 6.0.5])
- gestaltMiscAttr (addition)
-
- gestaltBootGlobals = 1; {Boot Globals} *8
- ****'mmu ' (System [since 6.0.4])
- gestaltMMUType (addition)
-
- gestalt68040MMU = 4; {68040 built-in} *2
- ****'ppc ' (System [since 7.0])
- gestaltPPCToolboxAttr (addition)
- The first thing that is confusing is that, unlike other selectors
- returning attributes, the responses are not bit values, but bit masks.
- This means you simply AND the value with the response to test the bit.
- The second thing that is confusing is how to interpret
- gestaltPPCToolboxPresent = 0x0000.
- What this means is that if the PPC toolbox is present, but has not
- been initialized (by calling PPCInit), then gestaltPPCToolboxAttr
- returns 0x0000. In reality, PPCInit gets called by the Process
- Manager before any applications get launched, so no applications
- will actually see this response. (Dave Radcliffe)
-
- gestaltPPCToolboxAttr = 'ppc ';
- gestaltPPCToolboxPresent = 0x0000, {Requires PPCInit to be called}
- gestaltPPCSupportsIncoming = 0x0001; {Deny incoming net requests}
- gestaltPPCSupportsOutGoing = 0x0002; {Deny outgoing net requests}
- gestaltPPCSupportsRealTime = 0x1000; {Supports real-time delivery}
- ****'proc' (System [since 6.0.4])
- gestaltProcessorType (addition)
-
- gestalt68040 = 5; *2
- ****'qdrw' (System [since 7.0])
- gestaltQuickDrawFeaturesAttr (not listed)
- There is a bug in the 'qdrw' selector that causes it to report
- that Color QuickDraw is always present, even on machines that
- don't support it.
- Apple has acknowledged this bug on AppleLink. (Chris Wysocki)
- Use SysEnvirons instead or try this:
- gHasColorQuickDraw := (Gestalt(gestaltQuickDrawVersion,
- qdVersion) = noErr) & (qdVersion >= gestaltQuickDraw8Bit);
-
- gestaltQuickDrawFeaturesAttr = 'qdrw'; *2
- gestaltHasColor = 0; *2
- gestaltHasDeepGWorlds = 1; *2
- gestaltHasDirectPixMaps = 2; *2
- gestaltHasGrayishTextOr = 3; *2]
- ****'rsrc' (System [should work since 7.0?])
- gestaltResourceMgrAttr (addition)
- Under System 7, bit 0 that tells if you have partial resource
- support doesn't work right. This selector is undefined under
- System 7.0 and 7.0.1 even though the partial resource calls are
- available. (Michael Hecht, Quinn)
-
- additional response exist but unknown (bit 1).
- ****'sccr' (System [6.0.4, discontinued])
- gestaltSCCReadPortsAddr (not listed)
- Returns the address of SCC read ports.
-
- gestaltSCCReadPortsAddr = 'sccr';
- ****'sccw' (System [6.0.4, discontinued])
- gestaltSCCWritePortsAddr (not listed)
- Returns the address of SCC write ports.
-
- gestaltSCCWritePortsAddr = 'sccw';
- ****'sysv' (System [since 6.0.4])
- gestaltSystemVersion (listed in IM VI; question)
- Returns the version number of currently active System file in BCD.
- Is it correct system 6.0.8 returns 0x0607? Can you determine if it
- is actually 6.0.8 in another way?
- ****'tabl' (System [since 6.0.4])
- gestaltSelectorTable (not listed)
- Returns a handle to the Gestalt selector table itself.
- The Gestalt selector table is kept in a resizable block in the system
- heap. The last item in the table is a dummy entry (INVALID), marked by
- a selector OSType(MaxLongInt). (Marco Piovanelli, he has also some
- snippet Pascal code to list all selectors)
-
- gestaltSelectorTable = 'tabl';
- ****'term' (System [7.1?])
- gestaltTermMgrAttr (addition)
-
- gestaltTermMgrErrorString = 1; *7
- ****'via1' (System [6.0.4, discontinued])
- gestaltVIA1Addr (not listed)
- Returns the address of VIA 1.
-
- gestaltVIA1Addr = 'via1';
- ****'via2' (System [6.0.4, discontinued])
- gestaltVIA2Addr (not listed)
- Returns the address of VIA 2.
-
- gestaltVIA2Addr = 'via1';
- ****'vmbs' (System, VM on [since 7.0])
- gestaltVMBackingStoreRef (not listed)
- Returns the ioRefNum of the VM storage file.
-
- gestaltVMBackingStoreRef = 'vmbs';
- ****'wma.' (System [since 7.0])
- gestaltResponderAttr (Workstation Management Agent aka Responder,
- not listed)
-
- gestaltResponderAttr = 'wma.';
- gestaltResponderPresent = 0;
- ****'xttt' (System [since 6.0.8])
- gestaltExtToolboxTable (not listed)
- Returns the base address of the Extended Toolbox trap table.
-
- gestaltExtToolboxTable = 'xttt';
-
-
- ====Apple Additional Software
- ****'admn' (AppleShare Admin appl [since 3.0])
- gestaltASAdminAttr
-
- gestaltASAdminAttr = 'admn';
- gestaltASAdminPresent = 0;
- ****'arb ' (AppleTalk Remote Access [1.0])
- gestaltArbitorAttr (Serial Port Arbitration) *9
-
- gestaltArbitorAttr = 'arb ';
- gestaltSerialArbitrationExists = 0; {Serial Port Arbitration installed}
- ****'asps' (AppleShare Print Server appl [since 3.0])
- gestaltASPrintServerAttr
-
- gestaltASPrintServerAttr = 'asps';
- gestaltASPrintServerPresent = 0;
- ****'aucd' (Audio CD Access ext [since 4.0])
- gestaltAudioCDAccessVersion (CD-ROM Software 4.0)
- Returns Audio CD Access version in BCD.
- Version 4.0.1 of the CD-ROM Software will still return 0x0400.
-
- gestaltAudioCDAccessVersion = 'aucd';
- ****'font' (TrueType INIT for System 6.x)
- This selector is also installed by the TT INIT.
- See for details IM VI.
- ****'hgfd' (AppleShare File Server appl [since 3.0])
- gestaltASFileServerAttr
-
- gestaltASFileServerAttr = 'hgfd';
- gestaltASFileServerPresent = 0;
- ****'hscd' (High Sierra File Access ext [since 4.0])
- gestaltHighSierraFAVersion (CD-ROM Software 4.0)
- Returns High Sierra File Access version in BCD.
- Version 4.0.1 of the CD-ROM Software will still return 0x0400.
-
- gestaltHighSierraFAVersion = 'hscd';
- ****'mtcp' (MacTCP cp [since 1.1])
- gestaltMacTCPAttr
- 0x0000 is returned if MacTCP is present but unopened, *5
- 0x0001 is returned for MacTCP when it is opened. *5
-
- gestaltMacTCPAttr = 'mtcp';
- gestaltMacTCPOpened = 0; *5
- I have seen this selector returning 0x0002 on a PB140 with System 7.1,
- unknown MacTCP version.
- ****'qtim' (QuickTime ext [since 1.0])
- gestaltQuickTimeVersion
- Returns QuickTime version in 4-byte words.
- If you install QuickTime under System 6, a major portion of the Alias
- Manager and FSSpec support is also added. But, QT doesn't implement
- the Gestalt selectors because the implementation is not complete. You
- must check for either Alias Mgr or QuickTime. (Michael Hecht)
-
- gestaltQuickTimeVersion = 'qtim';
- ****'strm' (AppleTalk Remote Access [1.0])
- gestaltRemoteAccessAttr *9
-
- gestaltRemoteAccessAttr = 'strm';
- gestaltRemoteAccessExists = 0; {RA Connection Interface is available)
- ****'ufox' (Foreign File Access ext [since 4.0])
- gestaltForeignFAVersion (CD-ROM Software 4.0)
- Returns Foreign File Access version in BCD.
- Version 4.0.1 of the CD-ROM Software will still return 0x0400.
-
- gestaltForeignFAVersion = 'ufox';
-
- ====Third Parties Software
- ****'ApoL' (Apollo ext [since 1.0])
- gestaltApolloTable
- Returns a handle to an instance of the following structure (described
- in C):
-
- struct
- { long version; // same as first 4 bytes of 'vers' resource
- short attr; // attribute bits
- Boolean (*Control)(Boolean) // control function
- };
-
- See for more information the Programmers' Information chapter in the
- Apollo 1.0 documentation. (Jeremy Roussak)
-
- gestaltApolloTable = 'ApoL';
- ****'CKI3' (AETracker cp [since 3.0])
- gestaltAETrackerAddr
- This selector returns a pointer to the external interface routine for
- AETracker, details of which are in the AETracker interface guide.
- (C.K. Haun)
-
- gestaltAETrackerAddr = 'CKI3';
- ****'SLip' (StuffIt SpaceSaver ext)
- gestaltSItSpaceSaverAddr
- Returns the address of the SpaceSaver "command module" which allows
- developers to access all the functions of SS. (Leonard Rosenthol)
-
- gestaltSItSpaceSaverAddr = 'SLip';
-
-
- ####Gestalt Selector Codes, Responses Unknown
- ====Apple System Software
- ****'BSDa' (CloseView cp)
- (developed by Berkeley Systems, Inc.)
- ****'bugz' (System (Tuna Helper INIT rsrc) [since 7.0]/Tune-up ext)
- IIx (701/111): $02f7f33f, PB140 (71): $1ffffaff
- ****'dict' (System [since 7.1])
- gestaltDictionaryMgrAttr/Version? (Dictionary Manager, not listed)
-
- gestaltDictionaryMgr??? = 'dict';
- PB140 (71): $00000001
- ****'icon' (System? [?])
- Icon Utilities Attr?
- ****'nubs' (System [6.0.4, 6.0.5, 6.0.7, discontinued])
- gestaltNuBusCount?
- Returns count of NuBus slots?
- Plus: $00000000, IIx: $00000006
- ****'rbv ' (System [6.0.4, discontinued])
- Plus: $00000000, IIx: -
- (Installed but unknown response on MacIIx)
- ****'slot' (System [6.0.4, 6.0.5, discontinued])
- Plus: $00000000, IIx: $00000003
- ****'slt1' (System [6.0.4, 6.0.5, discontinued])
- Returns first slot# in hexadecimal?
- Plus: -, IIx: $00000009
- (Installed but unknown response on MacPlus)
- ****'tsmv' (System [since 7.1])
- gestaltTextServicesMgrVersion? (not listed)
-
- gestaltTextServicesMgrVersion = 'tsmv';
- new System 7.1 response exists but unknown
- ****'vmcl' (System, VM on [since 7.0])
- ****OSType(7) (System [since 6.0.4])
- Returns LongInt('carl') and a result code of noErr.
- ****OSType(13) (System [since 6.0.4])
- Returns LongInt('bbmc') and a result code of noErr.
-
- ====Apple Additional Software
- ****'cpnt' (QuickTime ext [since 1.0])
- gestaltComponentMgrAttr/Version? (Component Manager)
-
- gestaltComponentMgr??? = 'cpnt';
- gestaltComponentMgrPresent = 0; (guess)
- ****'icmp' (QuickTime ext [since 1.0])
- gestaltCompressionMgrAttr (ImageCompression Manager) *6
-
- gestaltCompressionMgrAttr = 'icmp'; *6
- ****'kpcd' (Apple Photo Access ext [since 1.0])
- gestaltApplePhotoAccess??? (CD-ROM Software 4.0)
- Response unknown ($fffffff7).
-
- gestaltApplePhotoAccess??? = 'kpcd';
- ****'slnk' (AppleTalk Remote Access MNPlink? [1.0])
-
- ====Third Parties Software
- Especially the Third Party selectors may change with every new release
- and are therefore only listed in the 'known selectors' chapter when
- the author has described the structure in the documentation or by
- mail to me.
- ****'AP17' (?)
- ****'AzNe' (NameView cp)
- ****'ESOC' (Serial of Champions ext)
- ****'GtOp' (?)
- ****'gV00', 'gV01', 'gV02', 'gV03', 'gV04' (PowerPort cp???)
- ****'He20' (Helium cp)
- ****'Intj' (Interjection ext)
- ****'LFnt' (Dialog View cp, formerly List Font cp)
- ****'MV10' (TearOFF cp)
- ****'NMBT' (Attention cp [since 0.6])
- ****'PBUf' (?)
- ****'PBUt' (?)
- ****'RQDC' (DropCheck cp)
- ****'YeHa' (SpeedyFinder7 cp)
- The structure to which the _Gestalt selector refers changes almost
- invariably from version to version of SF7. Should someone work out
- parts of the structure of the selector keep in mind that it will
- almost certainly change in the next minor release and definitley with
- the next major release. (Victor Tan)
-
-
- ####Abbreviations
- ADB - Apple Desktop Bus
- AS - AppleShare
- ASC - Apple Sound Chip
- CPU - Central Processing Unit
- DAFB - ???
- DMA - Direct Memory Access
- DN - Developer Note
- FPU - Floating Point Unit
- IM - Inside Macintosh (old volumes I-VI)
- IOP - Input/Output Processor
- IWM - Integrated Woz Machine
- MMU - Memory Management Unit
- NIM - New Inside Macintosh
- OSS - ???
- PGC - ???
- PPC - Process-to-Process Communication
- PWM - ???
- RBV - RAM-Based Video
- SCC - Serial Communications Controller
- SCSI - Small Computer System Interface
- SIMM - Single In-line Memory Module
- Sonic - ???
- SWIM - Super Integrated Woz Machine?
- TN - Technical Note
- VIA - Versatile Interface Adapter
- VM - Virtual Memory
-
- appl - application
- cp - control panel
- ext - extension
- FA - File Access
- RA - Remote Access
-
-
- ####Format version numbers
- ====4-byte words
- The format of the LONGINT result is as follows:
- (based on posting by Ivan M Cavero Belaunde)
-
- MMmbSSss (e.g. 01524050)
-
- Where:
- MM is major revision release in BCD 1
- m is minor revision release in BCD 5
- b is bug fix release in BCD 2
- SS is development stage b
- (dev=10,alpha=20,beta=40,release=80)
- ss is dev. stage # in BCD 50
- ------- +
- 1.5.2b50 :-)
-
- The 'atkv' selector returns the major revision release in hexadecimal.
- ====BCD (Binary Coded Decimal)
- 0x0400 means 4.0.0 (MMmb, see above)
- ====INTEGER
- The decimal representation of the returned value is the version.
-
-
- ####AppleShare File & Print Server selector codes
- The selectors are defined when the application has run.
- If it is still running (or wasn't properly quit) the response
- is one. When the application has properly quit the response
- is zero.
- 'admn' AppleShare Admin
- 'asps' AppleShare Print Server
- 'hgfd' AppleShare File Server
-
-
- ####Glue code
- The following programming software includes glue-code to return some
- responses even if the Gestalt Manager is not available. Every entry
- includes the selectors of which the Glue-code can return a response.
-
- ****Symantec THINK Pascal [at least since 4.0.1]:
- atlk, fpu , kbd , kbd , lram, mach, mmu , qd , ram , sysv, vers
-
-
- ####Sources
- *1 Apple Inc.; TN M.OV.GestaltSysenvirons, May 1987, rev. Sep. 1992
- *2 Symantec Corp.; THINK Pascal 4.0.1
- *3 Carl C.Hewitt; Gestalt DA 1990
- *4 Apple Inc.; TN M.NW.AppleTalk2, Feb. 1992, rev. Sep. 1992
- *5 Apple Inc.; MacTCP 1.1 Programmer's Guide.
- *6 Apple Inc.; QuickTime ImageCompression source files (with QT 1.0)
- *7 Symantec Corp.; Think C GestaltGlue source files
- *8 Eric Simenel, Apple Computer France; Gestalt dcmd 1.0
- *9 Apple Inc.; AppleTalk Remote Access API External Reference
- Specification
-
-
- ####Related Software
- ****AEgestalt
- Uses Apple Events to get Gestalt response from remote machine,
- includes C-source. (Requires color?? Doesn't want to run on MacPlus)
- FTP: bric-a-brac.apple.com
- /dts/mac/sc/snippets/platforms.tools/aegestalt-1-0.hqx
- ****Gestalt DCMD
- This dcmd (debugger command for MacsBug) allows you to "use"
- Gestalt when you're in MacsBug.
- FTP: bric-a-brac.apple.com
- /dts/mac/sc/snippets/platforms.tools/gestalt-dcmd.hqx
- ****DisplayGestalt
- Small application displays configuration using Gestalt Mgr,
- includes C-source.
- FTP: mac.archive.umich.edu
- /development/libraries/displaygestalt.cpt.hqx
- ****Gestalt!
- Displays responses from know installed selectors.
- FTP: ftp.lu.se
- /pub/mac/util/Gestalt!_X.X.X.cpt.hqx
- /pub/mac/util/Gestalt!_X.X.X.cpt.hqx.txt
- ****GestaltDA
- Displays responses from installed selectors.
- ****GestaltExt
- External for 4TH Dimension Relational Database application from
- ACI/ACIUS.
- FTP: ftp.scri.fsu.edu
- /pub/4d/4d-GestaltExt.external.hqx
- ****GestaltGlue
- Glue code in C.
- FTP: ics.uci.edu
- /mac/think-c/symantec/pre-5.0stuff/gestalt.hqx
- ****Technical Notes 'M.OV.GestaltSysenvirons' and 'M.NW.AppleTalk2'
- M.OV.GestaltSysenvirons discusses Gestalt and SysEnvirons
- M.NW.AppleTalk2 discusses AppleTalk
- FTP: bric-a-brac.apple.com
- /dts/mac/tn/overview/gestalt-and-system-environs.hqx
- /dts/mac/tn/networking/appletalk2.hqx
- ****Test Gestalt
- Examples to test for QuickDraw version and Virtual Memory status,
- includes C-source.
- FTP: bric-a-brac.apple.com
- /dts/mac/sc/snippets/toolbox/testgestalt.hqx
-
-
- ####Acknowledgements
- I want to thank the following persons for their contribution
- to this list:
-
- C.K. Haun (Author AETracker cp) <haun@apple.com>
- Chris Wysocki <wysocki@netcom.com>
- Dave Radcliffe (Author TN GestaltSysenvirons) <radcliff@apple.com>
- Ivan M Cavero Belaunde <ivanski@world.std.com>
- Jeremy Roussak (Author Apollo ext) <jeremyr@dcs.qmw.ac.uk>
- Jon Watte <d88-jwa@nada.kth.se>
- Lawrence D'Oliveiro <ldo@waikato.ac.nz>
- Leonard Rosenthol <leonardr@netcom.com>
- Marco Piovanelli <piovanel@ghost.dsi.unimi.it>
- Mark B. Johnson <mjohnson@Apple.com>
- Michael Hecht <Michael_Hecht@mac.sas.com>
- Pete Resnick <resnick@cogsci.uiuc.edu>
- Quinn <quinn@cs.uwa.edu.au>
- Robert Hess <robert_hess@macweek.ziff.com>
- Roland Mansson (Author Gestalt! appl) <roland.mansson@ldc.lu.se>
- Victor Tan (Author SpeedyFinder7 cp) <victort@extro.ucc.su.oz.au>
-
- and the Computer Department at the Biology Faculty of the
- Free University in Amsterdam (The Netherlands) for their help and
- support.
-
- These persons provided information used in this list. They did this
- on personal title, NOT on behalf of their employer.
- I assume information you mail to me about Gestalt selectors may be
- used in this list. Information made available to the general public
- (e.g. a posting to a USENET newsgroup) is also included and the
- persons name added to this chapter (and to the mail list).
- I will mail you back to thank you and include the parts from the
- list which, according the information you provided, were changed
- to let you check them.
- BTW Persons are only listed with any software they wrote when
- these are mentioned somewhere in this list.
-
-
- ####Legal Stuff
- ====Notice of Liability
- The information in this list is distributed on a "AS IS" basis, without
- warranty. While every precaution has been taken in the preparation of
- this list, neither the moderator nor any contributor shall have any
- liability to any person or entity with respect to any liability, loss,
- or damage caused or alleged to be caused directly or indirectly by the
- information contained in this list or by the computer software and
- hardware products described herein.
- ====Trademarks
- Throughout this list trademarked names are used. Rather than put a
- trademark symbol in every occurrence of a trademarked name, I state I am
- using the names only in an editorial fashion and to the benefit of the
- trademark owner with no intention of infringement of the trademark.
- ====Distribution
- The information in this list may be used freely for NON-COMMERCIAL
- purposes only. If you DO USE the information in this list for
- COMMERCIAL purposes, you may consider sending the moderator a donation.
- If you (start to) redistribute this list outside Internet (especially
- printed, on disk or CD-ROM) you are kindly asked to notify the moderator.
- You are not allowed to distribute modified versions of this list,
- including, but not limited to, deleting, adding or moving text or
- adding non-text parts. Distribution in any electronical format except
- a normal text file is not allowed without permission.
- You are not allowed to redistribute it with any other name than
- 'gestalt-list-XX.txt' (where XX is the version number) unless because
- of technical reasons.
-
-
- ####Moderator
- Rene G.A. Ros (student Computer Science)
- D.C. van Krimpenstraat 3
- 1067 SG Amsterdam
- The Netherlands, Europe
- Bank : Postbank 4762669
-
- Phone# : +31 20 611 92 74 / +31 20 611 87 00
- Fax# : +31 20 611 60 06
- Internet : rgaros@bio.vu.nl
- rgaros@nikhefk.nikhef.nl
- rener@htsa.aha.nl (you can send a carbon copy of urgent
- messages to this address)
- CompuServe: 100112,1363 (not preferred)
- >INTERNET: rgaros@bio.vu.nl
-
-
-
- ---------------------------
-
- End of C.S.M.P. Digest
- **********************
-